Enable and fix warnings during the build. Although CMake adds warning flags, they are ignored in the libc++ headers because the headers '#pragma system header' themselves. This patch disables the system header pragma when building libc++ and fixes the warnings that arose. The warnings fixed were: 1. <memory> - anonymous structs are a GNU extension 2. <functional> - anonymous structs are a GNU extension. 3. <__hash_table> - Embedded preprocessor directives have undefined behavior. 4. <string> - Definition is missing noexcept from declaration. 5. <__std_stream> - Unused variable. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@242623 91177308-0d34-0410-b5e6-96231b3b80d8 
diff --git a/include/__hash_table b/include/__hash_table index f3a2030..ec20e10 100644 --- a/include/__hash_table +++ b/include/__hash_table 
@@ -984,15 +984,17 @@  __equal_range_multi(const _Key& __k) const;    void swap(__hash_table& __u) +#if _LIBCPP_STD_VER <= 11  _NOEXCEPT_(  __is_nothrow_swappable<hasher>::value && __is_nothrow_swappable<key_equal>::value -#if _LIBCPP_STD_VER <= 11  && (!allocator_traits<__pointer_allocator>::propagate_on_container_swap::value  || __is_nothrow_swappable<__pointer_allocator>::value)  && (!__node_traits::propagate_on_container_swap::value  || __is_nothrow_swappable<__node_allocator>::value) -#endif  ); +#else + _NOEXCEPT_(__is_nothrow_swappable<hasher>::value && __is_nothrow_swappable<key_equal>::value); +#endif    _LIBCPP_INLINE_VISIBILITY  size_type max_bucket_count() const _NOEXCEPT @@ -2351,15 +2353,17 @@  template <class _Tp, class _Hash, class _Equal, class _Alloc>  void  __hash_table<_Tp, _Hash, _Equal, _Alloc>::swap(__hash_table& __u) +#if _LIBCPP_STD_VER <= 11  _NOEXCEPT_(  __is_nothrow_swappable<hasher>::value && __is_nothrow_swappable<key_equal>::value -#if _LIBCPP_STD_VER <= 11  && (!allocator_traits<__pointer_allocator>::propagate_on_container_swap::value  || __is_nothrow_swappable<__pointer_allocator>::value)  && (!__node_traits::propagate_on_container_swap::value  || __is_nothrow_swappable<__node_allocator>::value) -#endif  ) +#else + _NOEXCEPT_(__is_nothrow_swappable<hasher>::value && __is_nothrow_swappable<key_equal>::value) +#endif  {  {  __node_pointer_pointer __npp = __bucket_list_.release();